package JVM.第01篇_字节码篇;

/**
 * 4、运算时的溢出
 * 数据运算可能会导致溢出，例如两个很大的正整数相加，结果可能是一个负数。
 * 其实Java虚拟机规范并无明确规定过整型数据溢出的具体结果，.
 *  仅规定了在处理整型数据时，只有除法指令以及求余指令中当出现除数为0时
 *   会导致虚拟机抛出异常 ArithmeticException.
 * 5、运算模式
 * ●向最接近数舍入模式: JVM要求在进行浮点数计算时，
 * 所有的运算结果都必须舍入到适当的精度，
 * 非精确结果必须舍入为可被表示的最接近的精确值，
 * 如果有两种可表示的形式与该值一样接近，将优先选择最低有效位为零的;
 * ●向零舍入模式:将浮点数转换为整数时，采用该模式，该模式将在目标数值
 * 类型中选择一个最接近但是不大于原值的数字作为最精确的舍入结果;
 * 6、NaN值使用
 * 当一个操作产生溢出时，将会使用有符号的无穷大表示，
 * 如果某个操作结果没有明确的数学定义的话，将会使用NaN值 来表示。
 * 而且所有使用NaN值作为操作数的算术操作，结果都会返回NaN;
 *
 * 方法调用指令：
 *  以下5条指令用于方法调用:
 * ●invokevirtual 指令用于调用对象的实例方法，
 * 根据对象的实际类型进行分派(虚方法分派)，支持多态。
 * 这也是Java语言中最常见的方法分派方式。
 * ●invokeinterface 指令用于调用接口方法，
 * 它会在运行时搜索由特定对象所实现的这个接口方法，并找出适合的方法进行调用。
 * ●invokespecial 指令用于调用一 些需要特殊处理的实例方法，包括实例初始化方
 * 法(构造器)、私有方法和父类方法。
 * 这些方法都是静态类型绑定的，不会在调用时进行动态派发。
 * ●invokestatic 指令用于调用命名类中的类方法(static方法)。
 * 这是静态绑定的。
 * ●invokedynamic: 调用动态绑定的方法，这个是JDK 1.7后新加入的指令。
 * 用于在运行时动态解析出调用点限定符所引用的方法，并执行该方法。
 * 前面4条调用指令的分派逻辑都固化在java虚拟机内部，
 * 而invokedynamic指令的分派逻辑是由用户所设定的引导方法决定的。
 */
public class E3_部分指令 {
}
